#ifndef MINI_ENGINE_GRAPHICSPIPELINE
#define MINI_ENGINE_GRAPHICSPIPELINE
#include <iostream>
using namespace std;
#include <fstream>
#include <vector>
#include <string>
#include "LogicalDevice.h"
#include "RenderPass.h"
#include "Application.h"

namespace mini_engine
{
    class GraphicsPipeline
    {
    private:
        GraphicsPipeline();
        static GraphicsPipeline *m_graphicsPipeline;
        static vector<char> readFile(const std::string& filename);
        VkShaderModule createShaderModule(const vector<char>& code);
        class GraphicsPipelineDestruction
        {
        public:
            ~GraphicsPipelineDestruction();
        };

    public:
        static GraphicsPipeline *getGraphicsPipeline();
        void createGraphicsPipeline();
        static VkPipelineLayout pipelineLayout;
        static VkPipeline graphicsPipeline;
        ~GraphicsPipeline();
    };

}

#endif